Writing Constructive Proofs Yielding Efficient Extracted Programs

نویسنده

  • Aleksey Nogin
چکیده

The NuPRL system [3] was designed for interactive writing of machine–checked constructive proofs and for extracting algorithms from the proofs. The extracted algorithms are guaranteed to be correct 1 which makes it possible to use NuPRL as a programming language with built-in verification[1,5,7,8,9,10]. However it turned out that proofs written without algorithmic efficiency in mind often produce very inefficient algorithms — exponential and double-exponential ones for problems that can be solved in polynomial time. In this paper we present some general principles of efficient programming in constructive type theory as well as describe a case study that shows how these principles apply to particular problems. We consider the proof of the Myhill–Nerode automata minimization theorem from the NuPRL automata library [4] which leaded to a double–exponential (in time) extracted program. Systematic use of the presented principles allowed us to build a new complexity cautious proof leading to polynomial-time algorithm extracted by the same NuPRL extractor. We believe that the principles presented in this paper in combination with other methods may lead to an efficient technique of programming-by-proofs.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Moving Proofs-As-Programs into Practice

Proofs in the Nuprl system, an implementation of a constructive type theory, yield “correct-by-construction” programs. In this paper a new methodology is presented for extracting efficient and readable programs from inductive proofs. The resulting extracted programs are in a form suitable for use in hierarchical verifications in that they are amenable to clean partial evaluation via extensions ...

متن کامل

Search algorithms in type theory

In this paper, we take an abstract view of search by describing search procedures via particular kinds of proofs in type theory. We rely on the proofs-as-programs interpretation to extract programs from our proofs. Using these techniques we explore, in depth, a large family of search problems by parameterizing the specification of the problem. A constructive proof is presented which has as its ...

متن کامل

Analysis of methods for extraction of programs from non-constructive proofs

Proofs in constructive logic correspond to functional programs in a direct and natural way. Computational content can also be found in proofs which use non-constructive principles, but more advanced techniques are required to interpret such proofs. Various methods have been developed to harvest programs from derivations in classical logic and experiments have yielded surprising and counterintui...

متن کامل

Program extraction in constructive analysis

We sketch a development of constructive analysis in Bishop’s style, with special emphasis on low type-level witnesses (using separability of the reals). The goal is to set up things in such a way that realistically executable programs can be extracted from proofs. This is carried out for (1) the Intermediate Value Theorem and (2) the existence of a continuous inverse to a monotonically increasi...

متن کامل

Efficient Finite-Domain Function Library for the Coq Proof Assistant*

Finiteness is an important concept in the computer science. In particular, finite-domain functions are a useful concept for representing various data structures such as finite graphs, finite automata and matrices, and used in quite a few programs. We provide finite-domain function libraries in Coq [12], which improves the efficiency of code extracted from proofs without forcing one to rewrite t...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:
  • Electr. Notes Theor. Comput. Sci.

دوره 37  شماره 

صفحات  -

تاریخ انتشار 2000